Providing toolbars

ABSTRACT

A server device receives a request for a document of a website from a user device; retrieves the document from a server that hosts that website; retrieves information associated with the user device; determines a toolbar for the document based on the information associated with the user device and information associated with the document; inserts the toolbar into the document; and transmits the document, with the toolbar, to the user device.

BACKGROUND

Websites incorporate active toolbars into their web pages. An activetoolbar includes buttons that run scripts, which pass information toother websites. Providers of different websites use differentarchitectures and/or implementations for different toolbars. A serviceprovider (e.g., an Internet service provider (ISP)) can add activetoolbars to web pages. The service provider has to support differentarchitectures of the different toolbars. However, the differentarchitectures are difficult to manage and exhaust considerable resourcesof the service provider. Furthermore, the service provider is unable touse a single, uniform architecture to provide different toolbars, fordifferent websites, to different types of computing devices.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of an example environment in which systems and/ormethods described herein may be implemented;

FIG. 2 is a diagram of example components of one or more of the devicesof FIG. 1;

FIG. 3 illustrates an example user interface of a web page with atoolbar;

FIG. 4 illustrates example components of the toolbar of FIG. 3;

FIG. 5 is a flow chart of an example process for providing a web pagewith a toolbar;

FIG. 6 is a flow chart of an example process for providing a browsertoolbar; and

FIG. 7 is a diagram of an example data structure that stores informationassociated with a user device of FIG. 1.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

The following detailed description refers to the accompanying drawings.The same reference numbers in different drawings may identify the sameor similar elements.

An implementation, described herein, may provide a uniform architecturefor including toolbars in different web pages that are provided to userdevices, such as mobile devices. For example, a management system, of anISP, may receive, from a user device, a request for a web page of awebsite. The management system may retrieve the web page and subscriberdata associated with a user of the user device. The management systemmay include a toolbar in the web page based on the subscriber data andinformation associated with the web page. The management system maytransmit the web page with the toolbar to the user device. The toolbarmay allow the user to keep the toolbar for other web pages in exchangefor opting-in for targeted advertising.

In the description to follow, reference will be made to web pages andwebsites. A web page, as used herein, is to be broadly interpreted toinclude any machine-readable and machine-storable work product,including a document. A document may include, for example, an e-mail, afile, a combination of files, one or more files with embedded links toother files, a news group posting, a blog, a web advertisement, aUniform Resource Locator (URL), etc. In the context of the Internet, acommon document is a web page. Web pages often include textualinformation and may include embedded information (such as metainformation, images, hyperlinks, etc.) and/or embedded instructions(such as Javascript, etc.). A website, as used herein, is to be broadlyinterpreted to include a collection of related documents, such asdocuments associated with a same host or organization. For example, thecollection of related documents might include all or a subset of thedocuments associated with a traditional website, directory, orsub-directory, or some other set of documents that are related to eachother (e.g., on the same host or associated with the same organization).

FIG. 1 is a diagram of an example environment 100 in which systemsand/or methods described herein may be implemented. As shown in FIG. 1,environment 100 may include one or more of the following components: auser device 110, a content distribution system (CDS) 120, a toolbarserver 130, a web server 140, and a network 150. As further shown inFIG. 1, CDS 120 one or more of the following components: an embeddedpacket capture (EPC) device 122, an analytics and reporting (AR) server124, and a content optimization (CO) server 126. A single user device110, EPC device 122, AR server 124, CO server 126, toolbar server 130,web server 140, and network 150 have been illustrated in FIG. 1 forsimplicity. In practice, there may be more user devices 110, EPC devices122, AR servers 124, CO servers 126, management servers 120, toolbarservers 130, web servers 140, and/or networks 150. Also, in someimplementations, one or more of the components of environment 100 mayperform one or more functions described as being performed by anotherone or more of the components of environment 100.

Furthermore, two or more of the components, of FIG. 1, may beimplemented within a single device, or a single component may beimplemented as multiple, distributed devices. Also, components ofenvironment 100 may interconnect via wired and/or wireless connections.In other words, any two components, of environment 100, may communicatevia a wired connection, a wireless connection, or a combination of awired connection and a wireless connection.

User device 110 may include any computation or communication device,such as a communication device that is capable of communicating with webserver 140 via CDS 120 and network 150. In one implementation, userdevice 110 may take the form of any mobile device, including a smartphone, a personal digital assistant (PDA), a handheld computer, apersonal media player, etc. Alternatively, or additionally, user device110 may take the form of any computer, including a web service terminal,a personal computer, a laptop computer, or any other device capable oftransmitting and/or receiving data.

In one example, user device 110 may enable a user to utilize an Internetbrowser to request a web page of a website provided/hosted by web server140. User device 110 may receive the web page with a toolbar from CDS120. User device 110 may display the web page with the toolbar. The usermay use user device 110 to interact with the web page and/or thetoolbar.

CDS 120 may include one or more devices that gather, process, search,store, and/or provide information in a manner similar to that describedherein. CDS 120 may represent an in-line network element of network 150,and may, for example, intercept any requests transmitted from userdevice 110 to web server 140. In another implementation, CDS 120 mayinclude additional components, fewer components, different components,and/or differently arranged components than are shown in FIG. 1. Forexample, CDS 120 may include toolbar server 130.

CDS 120 may receive a request for a web page (e.g., a Hypertext TransferProtocol (HTTP) GET request) from user device 110. CDS 120 may retrievethe web page from web server 140 based on the request. In oneimplementation, CDS 120 may identify a location of the web page (e.g.,stored at web server 140) by using a reverse IP look-up. Alternatively,or additionally, CDS 120 may identify the location of the web page(e.g., stored at web server 140) by using a domain naming system (DNS)query evaluation.

CDS 120 may identify a subscriber (e.g., determine an identifier of thesubscriber) associated with user device 110 based on the request for theweb page. CDS 120 retrieve subscriber data (e.g., based on theidentifier) associated with the subscriber and/or user device 110.

CDS 120 may transmit a request for a toolbar, including the subscriberdata and/or information associated with the web page, to toolbar server130. CDS 120 may receive code (e.g., HMTL code) for the toolbar and aninsertion point that specifies where to insert the code for the toolbarin code of the web page (e.g., at a specific line). CDS 120 may insertthe toolbar into the web page, and transmit the web page with thetoolbar to user device 110.

Alternatively, or additionally, CDS 120 may receive a request from userdevice 110 to keep the toolbar, as a browser toolbar, for other webpages. In response, CDS 120 may provide options to user device 110 forkeeping the toolbar as the browser toolbar. In one example, the optionsmay require the subscriber to opt-in for targeted advertising inexchange for keeping the toolbar as the browser toolbar. CDS 120 mayreceive a selection of one of the options and an acceptance by the userto opt-in for the targeted advertising. Thereafter, CDS 120 may providethe browser toolbar, based on the selected option, to user device 110.

CDS 120 may collect analytical and reporting (AR) information associatedwith traffic being sent to and/or received from user device 110. CDS 120may, for example, obtain AR information associated with traffic flowsbetween user device 110 and web server 140 and/or one or more other webservers, which may include a quantity of communications with each of theweb servers, a type of content associated with the communications, atype of content genre, etc. CDS 120 may obtain AR information associatedwith communications (e.g., instant message, email, calls, socialnetworking, etc.) between user device 110 and other user devices (notshown in FIG. 1) (e.g., quantity, duration, bandwidth, etc.). CDS 120may collect AR information associated with network performance when userdevice 110 communicates with the web servers and/or the other userdevices. CDS 120 may use the collected AR information to ascertain usagebehaviors associated with user device 110 and/or to identify preferencesassociated with user device 110 (e.g., preferred content genres,purchase habits, calling habits, browsing patterns, etc.). CDS 120 mayprovide information associated with the usage behaviors and/or thepreferences to toolbar server 130 in toolbar requests.

EPC device 122 may include a network device that, receives, processes,switches, routes, and/or transmits packets associated with traffic beingtransported to and/or from network 150. For example, EPC device 122 maytake the form of a routing device, a switching device (e.g., an Ethernetswitch, etc.), a multiplexing device, or a device that performs acombination of routing, switching, and/or multiplexing functions. In oneexample implementation, EPC device 122 may be a digital device. Inanother example implementation, EPC device 122 may be an optical device.In yet another example implementation, EPC device 122 may be acombination of a digital device and an optical device.

EPC device 122 may generally function to connect user device 110 to COserver 126 and/or web server 140. For example, EPC device 122 maytransfer traffic, received from user device 110 (e.g., via network 150)to CO server 126. In another example, EPC device 122 may receive, fromnetwork 150 and via CO server 126, traffic that is destined for userdevice 110 and EPC device 122 may send the traffic to user device 110via network 150. EPC device 122 may transfer DNS queries, received fromuser device 110 via network 150, to a domain name system (DNS) cache toobtain an IP address associated with web server 140 and/or a particulara content distribution network (CDN) caching server from which contentis to be retrieved. EPC device 122 may forward, to CO server 126, theobtained IP address that enables the content to be retrieved from webserver 140 and/or the CDN caching server.

The DNS cache may be a memory device, in DCS 120, that stores one ormore IP addresses for one or more web servers, including web server 140,and/or one or more CDN caching servers from which content can beobtained. The CDN caching server, in DCS 120, may process a variety oftypes of content that is downloaded from the one or more web servers(e.g., as streaming media, progressive streaming, progressive download,etc.) for storage by CDN caching server. CDS 120 may retrieve contentfrom the CDN caching server instead of retrieving the content from oneof the one or more web servers.

AR server 124 may include one or more server devices, or other types ofcomputation or communication devices, that gather, process, search,store, and/or provide information in a manner similar to that describedherein. In one example implementation, AR server 124 may monitor and/orcollect AR information associated with traffic being sent to and/orreceived from each of user devices 110.

For example, AR server 124 may, based on the monitoring, obtaininformation associated with user habits of each of user devices 110. ARserver 124 may, for example, obtain information associated with a time(e.g., total time, peak time, average time, etc. per second, day, week,etc.) and/or at what cost (e.g., based on minutes used and/or rate perminute, etc.) that a particular user device 110 communicates with webserver 140 and/or one or more other web servers (herein, collectivelyreferred to as the one or more web servers). AR server 124 may obtaininformation associated with a quantity of content that is downloaded(e.g., total quantity of bytes per second, week, month, etc.), aquantity of bandwidth used (e.g., total, peak, average, etc. per second,week, month, etc.), and/or a quantity of purchases made (e.g., total,average, etc. per day, week, month, etc.) as a result of communicationswith the one or more web servers.

AR server 124 may obtain information associated with content that isaccessed and/or downloaded from the one or more web servers, which mayinclude a method of download (e.g., via streaming media, progressivedownload, etc.), a type of content (e.g., movies, video, music, audio,games, documents, images, etc.), a genre associated with the content(e.g., sports, science fiction, news, etc.), etc. Based on theinformation associated with the content, AR server 124 may generate areport that identifies a preferred content provider (e.g., top one, topfive, top 10, etc.), a preferred type of content, a preferred genre ofcontent, etc. for user device 110. Additionally, or alternatively, ARserver 124 may generate another report that identifies a quantity ofcontent that user device 110 is likely to download, a type of productthat user device 110 is likely to purchase, a likelihood that userdevice 110 may purchase the type of product, etc. AR server 124 generatereports for other user devices 110 and/or may generate an aggregatereport for service provider network 160 based on the reports for userdevice 110 and/or the other user devices 110.

AR server 124 may monitor flows (e.g., traffic) associated with userdevices 110 that are transported via network 150 and may storeinformation, associated with the flows, in a flow data record (FDR). Theinformation, associated with the flows, may include informationassociated with a quantity of concurrent flows (e.g., total, average,peak, etc.), types and/or quantities of IP addresses (e.g., IP versionfour (IPv4) addresses, IP version six (IPv6) addresses, etc.), a timeassociated with peak flows, a time associated with peak quantities ofeach type of IP addresses, a quantity of DNS queries (e.g., from userdevice 110 to DNS cache 210), information associated with a duration ofsessions (e.g., peak, average, minimum, etc.), etc. Additionally, oralternatively, the information associated with the flows may includeinformation associated with data transfer rates (e.g., peak, average,minimum), trends associated with data transfer rates (e.g., increasing,decreasing, etc.), and/or upload to download ratios (e.g., based on atype of user device 110, location, etc.). AR server 124 may generate areport that includes information associated with the flows thatoriginate from user device 110.

AR server 124 may collect information associated with networkperformance based on traffic flowing between user devices 110 and webserver 140 and/or one or more other web servers. The informationassociated with the network performance may include informationassociated with a download time (e.g., peak, average, etc.), a quantityof latency and/or jitter per flow (e.g., peak, average, etc.), aquantity of lost and/or delayed packets (e.g., total, average, peak,etc.), etc.

Additionally, or alternatively, AR server 124 may, for example,correlate user habits, preferred content, preferred web server 140,etc., associated with user device 110, with user habits, preferredcontent, preferred web servers, etc. associated with other user devicesthat user device 110 communicates with.

AR server 124 may send all or a portion of the information, associatedwith user device 110, to toolbar server 130 (e.g., via CO server 126)that permits toolbar server to provide a toolbar, to user device 110, ina manner that is tailored and/or customized to the user habitsassociated with a subscriber of user device 110.

CO server 126 may include one or more server devices, or other types ofcomputation or communication devices, that gather, process, search,store, and/or provide information in a manner similar to that describedherein. In one example implementation, CO server 126 may perform contentoptimization operations on content being served to user device 110. Forexample, CO server 126 may process content, destined for user device110, to maximize throughput and/or avoid congestion while beingtransported over network 150. CO server 126 may, in another example,convert the content to a format, based on a type of user device 110,that enables the content to be received, processed, and/or rendered onuser device 110 within a period of time that is less than a threshold.

CO server 126 may perform network access translation (NAT) operations ontraffic being sent to and/or received from user device 110. For example,CO server 126 may translate an internal Internet protocol (IP) address,obtained from traffic that is received from user device 110, to acorresponding public IP address that can be used by network web server140 during a communication session with user device 110. In anotherexample, CO server 126 may translate the public IP address, associatedwith traffic received from network 150 that is destined for user device110, to a private IP address that can be used by EPC device 122 and/ornetwork 150 to send the traffic to user device 110. CO server 126 maystore, as information associated with NAT bindings, informationassociated with one or more private IP addresses that are associatedwith user device 110 in a manner that corresponds to one or more publicIP addresses associated with user device 110.

CO server 126 may extract and/or remove information that permits theidentity of user device 110 to be determined based on traffic and/orother information that is sent to web server 140. For example, COoptimization server may remove and/or extract information, associatedwith user device 110 (e.g., packets, data contained within packetsand/or headers, etc.), included within the traffic being sent to webserver 140. The information, associated with user device 110, mayinclude an identifier associated with user device 110 (e.g., a mobiledirectory number (MDN), an electronic serial number (ESN), a subscriberidentity module (SIM) universal resource identifier (URI), aninternational mobile subscriber identifier (IMSI), and/or otheridentifiers). In another example, CO server 126 may extract and/orremove information associated with a location of user device 110 (e.g.,when a user, of user device 110, has not authorized dissemination of thelocation of user device 110).

CO server 126 may process the content in a number of ways. For example,CO server 126 may process the content, received from the CDN cachingserver and/or web server 140 by resizing packets, associated with thecontent. Resizing the packets may enable the content to be moreefficiently served to user devices 110. For example, CO server 126 mayprocess the packets in a manner that conforms to a maximum transmissionunit (MTU) associated with network 150. Processing the packets in themanner that conforms to the MTU may permit the content to be served at amaximum data transfer rate (e.g., greater than a threshold) whileavoiding congestion within network 150.

CO server 126 may process the packets by performing packet and/or headercompression. The packets may be resized and/or compressed to achieve amaximum bandwidth and/or data transfer rate while avoiding congestionand serving the content to user device 110. CO server 126 may acceleratedata delivery associated with the content by reducing the quantity ofpackets associated with transporting and/or serving content to userdevices 110. For example, CO server 126 may perform acknowledgementpacket thinning by delaying the transport of acknowledgment packets,which may reduce a quantity of redundant acknowledgement packets beingtransported between network 150 and CO server 126 while sending thecontent to user device 110.

In another example, CO server 126 may repackage one or more smallerpackets into larger packets (e.g., up to the MTU) to increase a transferdata rate and/or bandwidth associated with the content. In yet anotherexample, when lost packets are detected, CO server 126 may use selectiveacknowledgement packets, that identify packets that were received fromcontent provider 150, which informs web server 140 to resend only thosepackets identified as missing.

CO server 126 may use one or more application programming interfaces(APIs) that permit CO server 126 to receive location-based services(LBS) from network 150. For example, CO server 126 may use an API,associated with the LBS (hereinafter referred to as an “LBS API”), toobtain, from network 150, information associated with a location of userdevice 110. The information associated with a location may includeinformation associated with latitude and/or longitude information, agrid location, a geographic area, an address, etc., associated with eachof user devices 110. CO server 126 may send the location information,associated with all or a portion of user devices 110, to toolbar server130 and/or web server 140 if authorized by a subscriber associated withuser devices 110. CO server 126 may not send the information, associatedwith the location, to toolbar server 130 and/or web server 140 if thesubscriber has not authorized the dissemination of the locationinformation.

CO server 126 may reduce processing time associated with user devices110 for which content is being served. For example, CO server 126 mayconvert content, received from the CDN caching server and/or web server140, into a format that can easily be received, processed, and/orrendered on user device 110. CO server 126 may, for example, useinformation associated with a type of user device 110 (e.g., a modelidentifier, information associated with an operating system being usedby user device 110, etc.) to convert the received content into theformat that causes a time, associated with mobile page rendering on userdevice 110, to be reduced (e.g., below a threshold). CO server 126 mayidentify user device 110 based on NAT bindings (e.g., described abovewith respect to EPC device 122) and may obtain information, associatedwith the type of user device 110, from information associated with auser profile for user device 110 (e.g., from a home subscriber server(HSS) associated with network 150).

Toolbar server 130 may represent a single server device or a collectionof server devices and/or computer systems. Toolbar server 130 may storeand/or have access to rules for selecting formats and components oftoolbars based on subscriber data (e.g., a type of user agent, such as abrowser, used by a user of user device 110) and/or informationassociated with web pages (e.g., addresses of the web pages). Forexample, one of the rules may specify that a particular format andparticular components are to be selected for a toolbar when the toolbaris for a particular web page (e.g., corresponding to www.example.com)and user device 110 has a particular type of browser (e.g, a mobiledevice browser). A format of a toolbar may include one or more of asize, a layout of components, a color, a style (e.g., a font), anorientation (e.g., horizontal or vertical), and/or one or more otherfeatures associated with an appearance of the toolbar.

Alternatively, or additionally, toolbar server 130 may also store and/orhave access to rules for identifying insertion points based on thesubscriber data and/or the information associated with the web pages.For example, one of the rules may specify a particular insertion pointin a HTML code of the particular web page when user device 110 has aparticular type of browser.

Toolbar server 130 may receive a request for a toolbar from CDS 120.Toolbar server 130 may select components and/or a format for thetoolbar, generate code for the toolbar, and/or identify an insertionpoint, of a web page, for the toolbar based on information provided byCDS 120 in the request for the toolbar. Toolbar server 130 may transmitthe code for the toolbar and the insertion point to CDS 120.

CDS 120 and/or toolbar server 130 may transfer information between oneanother by using an Internet Protocol (IP), a Transmission ControlProtocol (TCP), an IP Flow Information Export (IPFIX) protocol, a HTTP,a User Datagram Protocol (UDP), and/or any other method for transferringstructured data from one device to another. Alternatively, oradditionally, CDS 120 and toolbar server 130 may be combined into asingle system.

In one example, toolbar server 130 may include an analytics engine (notshown in FIG. 1). The analytics engine may receive information from ARserver 124 of CDS 120. The information may include, for example,browsing history of the user, which may be collected based on web pagerequests received from user device 110 of the user. The analytics enginemay adjust rules and/or create new rules for selecting components oftoolbars based on the collected information.

Web server 140 may represent a single server device or a collection ofserver devices and/or computer systems for hosting a website. Web server140 may receive a request (e.g., an HTTP GET request) for a particularweb page of the website. Web server 140 may retrieve code (e.g.,Hypertext Markup Language (HTML) code) of the particular web page. Webserver 140 may transmit the web page, in the form of the code, to userdevice 110 via CDS 120 and/or network 150.

Network 150 may include a single network, multiple networks of a sametype, or multiple networks of different types. For example, network 150may include one or more of a direct connection between devices, a localarea network (LAN), a wide area network (WAN) (e.g., the Internet), ametropolitan area network (MAN), a wireless network (e.g., a generalpacket radio service (GPRS) network), a telephone network (e.g., aPublic Switched Telephone Network (PSTN) or a cellular network), asubset of the Internet, an ad hoc network, a fiber optic network (e.g.,a fiber optic service (FiOS) network), or any combination of theaforementioned networks.

FIG. 2 is a diagram of example components of a device 200 that may beassociated with user device 110, CDS 120, EPC device 122, AR server 124,CO server 126, toolbar server 130, and/or web server 140. Each one ofuser device 110, CDS 120, EPC device 122, AR server 124, CO server 126,toolbar server 130, and/or web server 140 may include one or moredevices 200 and/or one or more of each one of the components of device200.

As shown in FIG. 2, device 200 may include a bus 210, a processor 220, amemory 230, an input component 240, an output component 250, and acommunication interface 260. In another implementation, device 200 mayinclude additional components, fewer components, different components,and/or differently arranged components than are shown in FIG. 2.Additionally, or alternatively, one or more components of device 200 mayperform one or more tasks described as being performed by one or moreother components of device 200.

Bus 210 may include a path that permits communication among thecomponents of device 200. Processor 220 may include a processor,microprocessor, or processing logic that may interpret and executeinstructions. Memory 230 may include any type of dynamic storage devicethat may store information and instructions for execution by processor220, and/or any type of non-volatile storage device that may storeinformation for use by processor 220.

Input component 240 may include one or more input mechanisms that permita user to input information to device 200. Output component 350 mayinclude one or more output mechanisms that output information to theuser. Examples of input and output mechanisms may include buttons; atouch screen interface to permit data and control commands to be inputinto device 200; a speaker to receive electrical signals and outputaudio signals; a microphone to receive audio signals and outputelectrical signals; a display to output visual information (e.g., webpages, product information, etc.); etc.

Communication interface 260 may include any transceiver-like mechanismthat enables device 200 to communicate with other devices and/orsystems. For example, communication interface 260 may include anEthernet interface, an optical interface, a coaxial interface, awireless interface, or the like.

Device 200 may perform certain operations described herein. Device 200may perform these operations in response to processor 220 executingsoftware instructions (e.g., computer program(s)) contained in acomputer-readable medium, such as memory 230, a secondary storage device(e.g., a hard disk, etc.), or other forms of random access memory (RAM)or read only memory (ROM). A computer-readable medium may be defined asa non-transitory memory device. A memory device may include space withina single physical memory device or spread across multiple physicalmemory devices. The software instructions may be read into memory 230from another computer-readable medium or from another device. Thesoftware instructions contained in memory 230 may cause processor 220 toperform processes described herein. Alternatively, hardwired circuitrymay be used in place of or in combination with software instructions toimplement processes described herein. Thus, implementations describedherein are not limited to any specific combination of hardware circuitryand software.

FIG. 3 illustrates an example user interface 300 for displaying a webpage with a toolbar. As shown in FIG. 3, user interface 300 may includea web page 310 that includes content 320 and a toolbar 330. In otherimplementations, user interface 300 may include additional components,fewer components, different components, or differently arrangedcomponents than are shown in FIG. 3.

In one example, as discussed further below, user device 110 may transmita request for web page 310 of a website. The request may include a URL(e.g., www.example.com) that identifies web page 310. Management server130 may retrieve content 320 of web page 310 from web server 140.Content 320 may include HTML code for web page 310. Management server130 may retrieve toolbar 330 from toolbar server 130. Toolbar 330 mayinclude HTML code for toolbar 330. Management server 130 may inserttoolbar 330 into web page 310 to form user interface 300. Managementserver 130 may transmit web page 310, with inserted toolbar 330, to userdevice 110. User device 110 may display web page 310 with content 320and toolbar 330.

FIG. 4 illustrates example components of toolbar 330. As shown in FIG.4, toolbar 330 may include one or more of: buttons 410-1, 410-2, . . . ,410-N (collectively referred to as “buttons 410” and individually as“button 410”); an advertisement component 420; and a keep toolbar button430. In other implementations, toolbar 330 may include additionalcomponents, fewer components, different components, or differentlyarranged components than are shown in FIG. 4.

Button 410 may include a mechanism that executes a script when selected.Herein. a button may refer to a drop down menu, an icon, a link, and/orany other type of user interface element. The script may cause userdevice 110 to retrieve information associated with web page 310, content320, user device 110, and/or a user of user device 110. The script maycause user device 110 to transmit the retrieved information to anotherwebsite. Each one of buttons 410 may correspond to a different webservice. In one example, button 410-1 may correspond to a socialnetworking service. When a user of user device 110 selects button 410-1,information associated with web page 310 may be posted on a profile ofthe social network of the user. Alternatively, or additionally, button410-2 may correspond to an email service. When the user of user device110 selects button 410-2, the user may use their email account, providedby the email service, to retrieve email information associated with webpage 310.

Advertisement component 420 may include one or more advertisements. Eachone of the advertisements may include a banner and a hyperlink (e.g., aURL) to a website associated with an advertiser. Toolbar server 130 mayselect one or more of the advertisements based on demographicinformation, purchasing history, and/or browsing history of the user(e.g., when the user opts-in for targeted advertising) and informationassociated with example web page 310. The demographic information, thepurchasing history, and/or the browsing history may be collected andused by a communication service provider (e.g., the ISP that operatesCDS 120) with the user's permission.

Keep toolbar button 430 may include a mechanism to allow a user of userdevice 110 to keep toolbar 430. In response to the selection of keeptoolbar button 430, user device 110 may transmit a request, for userdevice 110 to keep toolbar 330, to CDS 120.

FIG. 5 is a flow chart of an example process 500 for providing a webpage with a toolbar. In one implementation, CDS 120 may perform process500. Alternatively, or additionally, a device or collection of devicesseparate from, or in combination with, CDS 120 may perform some or allof process 500.

As show in FIG. 5, process 500 may include receiving a web page request(block 510). For example, a user may use user device 110 to open anInternet browser. In one implementation, the user may enter a URL of aweb page, of a website, into an address bar of the Internet browser.Alternatively, or additionally, the user may select a hyperlink to theweb page. Thereafter, user device 110 may transmit a web page request,to request the web page, to web server 140, which hosts the website thatincludes the web page. The web page request may include the URL of theweb page and one or more identifiers (e.g., an IP address and a port)associated with user device 110. CDS 120 may receive the web page byintercepting the web page request while the web page request is beingtransmitted via network 150 from user device 110 to web server 140.

Process 500 may further include retrieving web page code (block 520).For example, after receiving/intercepting the web page request, CDS 120may forward the web page request, or an HTTP GET request of the web pagerequest, to web server 140. In one implementation, CDS 120 may identifya location of the web page (e.g., stored in web server 140) by using areverse IP look-up. Alternatively, or additionally, CDS 120 may identifythe location of the web page by using a DNS query evaluation. Web server140 may receive the web page request, retrieve web page code (e.g., HTMLcode) of the web page, and transmit the web page code to user device 110via network 150. CDS 120 may receive/intercept the web page code.

Process 500 may also include retrieving subscriber data (block 525). Forexample, while retrieving the web page, CDS 120 may simultaneouslyretrieve subscriber data associated with user device 110 and/or the userof user device 110. In one implementation, CDS 120 may determine atelephone number (e.g., a mobile device number (MDN)) of user device 110based on the identifiers included in the web page request.Alternatively, or additionally, CDS 120 may determine an InternationalMobile Equipment Identifier (IMEI) of user device 110 based on theidentifiers included in the web page request. In one example, CDS 120may retrieve the subscriber data from one or more databases based on thetelephone number and/or the IMEI.

In another example, a storage device of CDS 120 may store an analyticsand reporting data structure (hereinafter referred to as “AR datastructure”), associated with user device 110, that includes a portion ofthe subscriber data. The AR data structure may include, for example, oneor more of demographics information, toolbar preferences, content, usagepatterns, network performance and/or other information associated withuser device 110, as described further below with reference to FIG. 7.The toolbar preferences may include a format and/or one or more types ofcomponents, for toolbars, requested by the user from a service providerassociated with (e.g., that operates) CDS 120.

In yet another example, CDS 120 may retrieve another portion of thesubscriber data from an HSS associated with network 150. The otherportion of the subscriber data may include, for example, a type of userdevice 110 (e.g., a generation of technology used by user device 110(e.g., a third-generation (3G) wireless telephone technology device),information associated with an operating system being used by userdevice 110, etc.), user agent capabilities associated with user device110 and/or the Internet browser of user device 110, etc.).

Process 500 may also include transmitting a toolbar request (block 530)and receiving toolbar code and an insertion point (block 540). Forexample, after receiving the web page code and the subscriber data, CDS120 may transmit a toolbar request to toolbar server 130. The toolbarrequest may include information associated with the web page (e.g., theURL of the web page) and the subscriber data. Toolbar server 130 mayselect a format and components for a toolbar based on the subscriberdata (e.g., content, usage patterns, and/or network performanceassociated with user device 110) and/or the information associated withthe web page. The components may include for example, one or morebuttons 410, advertisement component 420, and/or keep toolbar button 430(FIG. 4).

Toolbar server 130 may generate toolbar code (e.g., executable code) forthe toolbar based on the selected format and the selected contents.Toolbar server 130 may further select an insertion point based on theuser agent capabilities, included in the subscriber data, and/or theinformation associated with the web page. The insertion point mayspecify a location of the web page code (e.g., a line in the HTML codeof the web page) in which to insert the toolbar. Toolbar server 130 maytransmit the toolbar code and the insertion point to CDS 120. CDS 120may receive the toolbar code and the insertion point.

Process 500 may also include inserting the toolbar into the web page(block 550) and transmitting the web page with the toolbar (block 560).For example, CDS 120 may insert the toolbar into the web page byinserting the toolbar code at the insertion point of the web page code.Thereafter, CDS 120 may transmit the web page with the toolbar, in theform of the web page code that includes the toolbar code, to user device110. User device 110 may display the web page with the toolbar, in theInternet browser, based on the web page code. The user may use userdevice 110 to select one or more components of the toolbar.

Alternatively, or additionally, CDS 120 may store and/or have access toa list of subscribers that requested to not include toolbars in webpages. Before transmitting the toolbar request (block 530), CDS 120 maydetermine whether the user, of user device 110, is included in the listbased on the telephone number and/or the IMEI of user device 110. If CDS120 determines that the user is included in the list, CDS 120 maytransmit the web page code, without the toolbar code, to user device110. User device 110 may display the web page without any toolbar. IfCDS 120 determines that the user is not included in the list, CDS 120may transmit the toolbar request (block 530).

FIG. 6 is a flow chart of an example process 600 for providing a browsertoolbar. In one implementation, CDS 120 may perform process 600.Alternatively, or additionally, a device or collection of devicesseparate from, or in combination with, CDS 120 may perform some or allof process 600. Process 600 is described below with reference to toolbar330 of FIG. 4.

Process 600 may include receiving a request to keep a toolbar (block610). For example, process 600 may occur after a web page with a toolbaris received by user device 110 from CDS 120. The toolbar may includekeep toolbar button 430 (FIG. 4). Assume that a user of user device 110decides to keep the toolbar while browsing other web pages in thefuture. The user may use user device 110 to select keep toolbar button430. In response, user device 100 may transmit a request to keep thetoolbar to CDS 120. CDS 120 may receive the request to keep the toolbar.

Process 600 may further include transmitting options for keeping thetoolbar and an opt-in request (block 620) and receiving a selection ofan option and an acceptance of the opt-in request (block 630). Forexample, after receiving the request to keep toolbar 330, managementserver 130 transmit options for keeping toolbar 330 and an opt-inrequest to user device 110. The options for keeping toolbar 330 mayinclude options to keep toolbar 330 for limited periods of time (e.g.,one day, a few days, etc.) or permanently. The opt-in request mayinclude a request to track browsing history and/or purchasing history ofthe user to provide targeted advertising to the user via toolbar 330.The user may use user device 110 to select one option of the options andto accept the opt-in request. CDS 120 may receive the selection of oneof the options and the acceptance of the opt-in request.

Process 600 may also include generating and transmitting a browsertoolbar (block 640). For example, after receiving the selection of theoption, CDS 120 may generate a browser toolbar that includes the formatand/or the components of toolbar 330 included in web page 310. CDS 120may transmit the browser toolbar to user device 110. User device 110 mayinclude the browser toolbar in the Internet browser of user device 110for a particular period of time (e.g., permanently, one day, etc.)specified by the selected option. The user may browse to other web pagesvia the Internet browser. The user may select one or more components ofthe browser toolbar while viewing the other web pages.

While the user is browsing to and/or viewing the other web pages, CDS120 may select targeted advertising for the user based on informationcollected about the user (e.g., the browsing history and/or thepurchasing history). CDS 120 may transmit the selected targetedadvertising to user device 110. User device 110 may display the targetedadvertising in advertisement component 420 (FIG. 4) of the browsertoolbar. The user may select one or more hyperlinks associated with thetargeted advertising.

FIG. 7 is a diagram of an example data structure 700 (hereinafterreferred to as “AR data structure 700”) that stores subscriber dataassociated with user device 110. As shown in FIG. 7, AR data structure700 may include a collection of fields, such as a user device identifier(ID) field 705, a mobile switching center (MSC) call data record (CDR)field 710, a short message service (SMS) call data record (CDR) field715, a multi-media service (MMS) call data record (CDR) field 720, agroup of usage category fields 725-1, . . . , 725-M (where M≧1), a groupof content category fields 730-1, . . . , 730-N (where N≧1), aperformance analytics field 735, a toolbar preferences field 760, ademographics information field 770, and a targeted advertising statusfield 780. AR data structure 700 includes these fields for explanatorypurposes. In practice, AR data structure 700 may include additionalfields, fewer fields, different fields, and/or differently arrangedfields than are described with respect to AR data structure 700.

User device ID field 705 may store information associated with aparticular user device 110. The information, associated with theparticular user device 110, may include an identifier (e.g., a MDN, anIMSI, a SIM URI, etc.). MSC CDR field 710 may store informationassociated with calls to and/or from the particular user device 110. Forexample, information, associated with a call may include informationassociated with other user devices 110 (e.g., MDN-A, LDN-B, MDN-C, etc,as shown by ellipse 742 of FIG. 7) with which the particular user device110 is communicating, information associated with a manner in which thecall was routed, a time associated with the call, a duration associatedwith the call, etc. SMS CDR field 715 may store information associatedwith messages (e.g., SMS messages) sent to or from the particular userdevice 110. For example, the information, associated with a message mayinclude information associated with other user devices (e.g., MDN-020,MDN-021, MDN-022, etc., as shown by ellipse 744) with which theparticular user device 110 was communicating, information associatedwith a manner in which the message was routed, a time associated withthe message, a quantity of bytes associated with the message, etc. MMSCDR field 720 may store information associated with multi-media messages(e.g., MMS messages) sent to and/or from the particular user device 110.For example, information, associated with a multi-media message mayinclude information associated with other user devices (e.g., MDN-D,email2, IP address3, etc., as shown by ellipse 746 of FIG. 7) with whichthe particular user device 110 was communicating, information associatedwith a manner in which the multi-media message was routed, a timeassociated with the multi-media message, a quantity of bytes associatedwith the multi-media message, etc.

Usage category field 725 may store AR information associated with userhabits that correspond to the particular user device 110. For example,CDS 120 may store, in usage category field 725, information associatedwith a cumulative time (e.g., total time, peak time, average time, etc.per second, day, week, etc.) and/or a cost (e.g., based on minutes usedand/or rate per minute, etc.) that a particular user device 110communicates with web server 140 and/or one or more other web servers140. CDS 120 may store information associated with a quantity of contentthat is downloaded (e.g., bytes per second, week, month, etc.), aquantity of bandwidth and/or a data transfer rate used to download thecontent (e.g., total, peak, average, etc. per second, week, month,etc.), times of day when user device 110 is receiving content, etc. as aresult of communications with each of the web servers. For example, asshown in ellipse 748 of FIG. 7, usage category fields 725 may includeinformation associated with web server 140 and/or one/or one or moreother web servers (e.g., content provider 1, content provider 2, contentprovider 3, etc.); corresponding costs (e.g., cost1, cost 2, cost3,etc.); corresponding times (e.g., time1, time2, time3, etc.);corresponding quantities of content that is downloaded (e.g., byte1,byte2, byte3, etc.); and corresponding data transfer rate used todownload the content (e.g., BW1, BW2, BW3, etc.).

Content category field 730 may store AR information associated withcontent that has been served to the particular user device 110. Forexample, CDS 120 may store, in content category field 730, informationassociated with a type of content (e.g., movies, video, music, audio,games, documents, images, etc.), a genre associated with the content(e.g., sports, science fiction, news, etc.), and/or purchases of goodsand/or services (e.g., total, average, etc. per day, week, month, etc.)obtained via interactions with web server 140 and/or one or more otherweb servers 140. In another example, CDS 120 may sort the informationassociated with the content based on a quantity of times that theparticular user device 110 accesses, downloads, and/or purchases contentassociated with each genre, each type of content, and/or one or moretypes of goods and/or services from web server 140 and/or one or moreother web servers 140. Based on the sorting of the information, CDS 120may identify one or more preferred web servers (e.g., top one, timefive, top 10, etc.), one or more preferred types of content (e.g., topone, time five, top 10, etc.), and/or one or more preferred contentgenres (e.g., top one, time five, top 10, etc.) associated with theparticular user device 110. For example, as shown in ellipse 750,content category fields 730 may include information associated with atype of content (e.g., video1, audio2, text3/games3, etc.) and/or agenre associated with the content (e.g., genre1, genre2, genre3, etc.).

Performance analytics field 735 may store AR information correspondingto performance of network 150 when serving content to the particularuser device 110. For example, CDS 120 may store, in performanceanalytics field 735, information associated with a quantity of flows(e.g., total, average, peak, etc. per day, week, month, etc.) associatedwith the particular user device 110, types and/or quantities of IPaddresses used during communications (e.g., IPv4 addresses, IPv6addresses, etc.) associated with the particular user device 110, aquantity of DNS queries (e.g., from user device 110 to DNS cache 210),and/or information associated with a duration of communications (e.g.,peak, average, minimum, etc.) in connection with the particular userdevice 110.

CDS 120 may store, in performance analytics field 735, informationassociated with data transfer rates (e.g., peak, average, minimum),trends associated with data transfer rates (e.g., increasing,decreasing, etc.), and/or upload to download ratios (e.g., based on atype of the particular user device 110, location, etc.). Additionally,or alternatively, CDS 120 may store, in performance analytics field 735,information associated with a quantity of latency and/or jitter per flow(e.g., peak, average, etc.), a quantity of lost and/or delayed packets(e.g., total, average, peak, etc.) etc. in connection with theparticular user device 110 when communicating to web server 140. Forexample, as shown in ellipse 752, performance analytics fields 730 mayinclude a flow quantity, a session time, and/or a peak load.

Toolbar preferences field 760 may store information about toolbars usedby toolbar server 130 to generate a toolbar provided to user device 110.Toolbar preferences field 760 may include, for example, a format and/orone or more types of components, for toolbars, requested by the userfrom a service provider associated with (e.g., that operates) CDS 120.In another implementation, CDS 120 may update toolbar preferences field760 based on information collected about use of toolbars by a user ofuser device 110.

Demographics information field 770 may include information about a user(e.g., a subscriber) associated with user device 110. Demographicsinformation field 770 may include, for example, an age of the user, agender of the user, an income of the user, an occupation of the user,family information associated with the user, etc. In someimplementations, CDS 120 may only store information in demographicsinformation field 770 after receiving authorization from the user toretrieve, collect, and store demographics information of the user.Targeted advertising status field 780 may store information thatindicates whether the user opted-in for targeted advertising, asdescribed above.

The foregoing description provides illustration and description, but isnot intended to be exhaustive or to limit the embodiments to the preciseform disclosed. Modifications and variations are possible in light ofthe above teachings or may be acquired from practice of the embodiments.

While series of blocks have been described with regard to FIGS. 5 and 6,the order of the blocks may be modified in other implementations.Further, non-dependent blocks may be performed in parallel.

It will be apparent that systems and methods, as described above, may beimplemented in many different forms of software, firmware, and hardwarein the implementations illustrated in the figures. The actual softwarecode or specialized control hardware used to implement these systems andmethods is not limiting of the invention. Thus, the operation andbehavior of the systems and methods were described without reference tothe specific software code—it being understood that software and controlhardware can be designed to implement the systems and methods based onthe description herein.

Even though particular combinations of features are recited in theclaims and/or disclosed in the specification, these combinations are notintended to limit the disclosure of the invention. In fact, many ofthese features may be combined in ways not specifically recited in theclaims and/or disclosed in the specification. Although each dependentclaim listed below may directly depend on only one other claim, thedisclosure of the invention includes each dependent claim in combinationwith every other claim in the claim set.

No element, act, or instruction used in the present application shouldbe construed as critical or essential to the invention unless explicitlydescribed as such. Also, as used herein, the article “a” is intended toinclude one or more items. Where only one item is intended, the term“one” or similar language is used. Further, the phrase “based on” isintended to mean “based, at least in part, on” unless explicitly statedotherwise.

What is claimed is:
 1. A method comprising: receiving, by a serverdevice and from a user device, a request for a document associated witha website; retrieving, by the server device, the document from a serverthat hosts the website; retrieving, by the server device, informationassociated with the user device, where the information comprises atleast one of information related to content served to the user devicefrom a content distribution system, usage patterns information, ornetwork performance information associated with the user device, andwherein the network performance information includes informationassociated with at least one of a download time, latency per flow,jitter per flow, lost packets, or delayed packets; determining, by theserver device, a toolbar for the document based on the informationassociated with the user device and information associated with thedocument, wherein the toolbar comprises a keep toolbar button;inserting, by the server device, the toolbar into the document;transmitting, by the server device, the document, with the toolbar, tothe user device; and in response to selection of the keep toolbarbutton, receiving, by the server device and from the user device, arequest to keep the toolbar permanently or for a period of time when theuser device displays other documents.
 2. The method of claim 1, wherethe request comprises a uniform resource locator (URL) of the documentand an identifier associated with the user device.
 3. The method ofclaim 1, where retrieving information associated with the user devicecomprises: determining a phone number or an International MobileEquipment Identifier (IMEI) of the user device based on informationincluded in the request, and retrieving the information associated withthe user device based on the phone number or the IMEI.
 4. The method ofclaim 1, where the information associated with the user device furthercomprises one or more of: demographics information associated with auser of the user device, or toolbar preferences associated with theuser.
 5. The method of claim 1, where the information associated withthe user device further comprises: a format requested by a user, of theuser device, for the toolbar, and one or more components requested bythe user for the toolbar.
 6. The method of claim 1, further comprising:determining an insertion point for the toolbar based on the informationassociated with the user device and the information associated with thedocument, where the information associated with the user device compriseat least one of capabilities of a browser of the user device or a typeassociated with the user device.
 7. The method of claim 6, whereinserting the toolbar into the document comprises: inserting hypertextmarkup language (HTML) code of the toolbar at a line in HTML code of thedocument specified by the insertion point, and where transmitting thedocument with the toolbar comprises: transmitting the HTML code of thedocument with the HTML code of the toolbar.
 8. The method of claim 1,further comprising: receiving, from the user device, a request to keepthe toolbar transmitted with the document; transmitting, to the userdevice, an opt-in request for a user of the user device to opt-in fortargeted advertising; receiving, from the user device, an acceptance ofthe opt-in request; and transmitting, to the user device, a new toolbarfor a browser of the user device, where the new toolbar comprises one ormore components of the toolbar inserted into the document.
 9. The methodof claim 8, further comprising: collecting browsing history of the user;selecting targeted advertising for the user device based on the browsinghistory; and transmitting, to the user device, the selected targetedadvertising.
 10. A device comprising: a memory to store data associatedwith a user device; and a processor to: intercept a web page request,for a web page of a website, transmitted from the user device, determinean identifier associated with the user device based on the web pagerequest, retrieve the data based on the identifier, where the datacomprises information associated with at least one of content served tothe user device from a content distribution system, usage patterns, ornetwork performance associated with the user device, and wherein thenetwork performance information includes information associated with atleast one of a download time, latency per flow, jitter per flow, lostpackets, or delayed packets, retrieve the web page from a web serverassociated with the website, determine a toolbar for the web page basedon the data and information associated with the web page wherein thetoolbar comprises a keep toolbar button, transmit the web page with thetoolbar to the user device; and in response to selection of the keeptoolbar button, receive, from the user device, a request to keep thetoolbar permanently or for a period of time when the user devicedisplays other documents.
 11. The device of claim 10, where, whendetermining the toolbar for the web page, the processor is further to:transmit a toolbar request to a toolbar server, and receive, from thetoolbar server, toolbar code for the toolbar and an insertion point,where the toolbar request comprises the data and the informationassociated with the web page, and where the insertion point specifies alocation of the web page at which to insert the toolbar.
 12. The deviceof claim 11, where, when transmitting the web page with the toolbar, theprocessor is further to: insert toolbar code at the insertion point ofweb page code of the web page, and transmit the web page code to theuser device.
 13. The device of claim 10, where the data furthercomprises one or more of: a type associated with the user device,capabilities of a browser of the user device, a format requested by auser, of the user device, for the toolbar, or one or more types ofcomponents requested by the user for the toolbar.
 14. The device ofclaim 10, where the information associated with the web page comprises auniform resource locator (URL) of the web page.
 15. One or morenon-transitory computer-readable media storing instructions executableby one or more processors of a device to perform a method, the mediacomprising: one or more instructions to transmit a toolbar request to aserver, where the toolbar request comprises first information associatedwith a web page and second information associated with a mobile device,and where the second information comprises at least one of informationrelated to content served to the mobile device from a contentdistribution system, usage patterns information, or network performanceinformation collected about the mobile device, and wherein the networkperformance information includes information associated with at leastone of a download time, latency per flow, jitter per flow, lost packets,or delayed packets; one or more instructions to receive, from theserver, toolbar code for a toolbar and an insertion point, wherein thetoolbar comprises a component to transmit, in response to selection ofthe component, a request to keep the toolbar permanently or for a periodof time when the mobile device displays other documents; one or moreinstructions to send, to the server, in response to selection of thecomponent, the request to keep the toolbar permanently or for a periodof time when the mobile device displays other documents; one or moreinstructions to insert the toolbar code into web page code, of the webpage, at the insertion point of the web page code; and one or moreinstructions to transmit the web page code to the mobile device.
 16. Themedia of claim 15, where the toolbar comprises one or more buttonsassociated with one or more web services; and where the secondinformation comprises a selection of the one or more buttons by asubscriber associated with the mobile device.
 17. The media of claim 15,where the media further comprises: one or more instructions to receive,from the mobile device, a web page request for the web page; and one ormore instructions to retrieve, from a web server associated with the webpage, the web page code based on the web page request, and where thefirst information comprises a uniform resource locator (URL) of the webpage.
 18. The media of claim 17, where the media further comprises: oneor more instructions to determine an identifier of a subscriberassociated with the mobile device based on the web page request; and oneor more instructions to retrieve the second information based on theidentifier, and where the second information comprises at least one ormore of: a format requested by the subscriber for the toolbar, or one ormore components requested by the subscriber for the toolbar.
 19. Themedia of claim 16, where the media further comprises: one or moreinstructions to receive, from the mobile device, an acceptance to opt-infor targeted advertising; one or more instructions to collect newinformation associated with the subscriber; one or more instructions toselect targeted advertising for the mobile device based on the newinformation; and one or more instructions to transmit, to the mobiledevice, the selected targeted advertising.
 20. A method comprising:receiving, by a server device and from a user device, a request for aweb page associated with a website; retrieving, by the server device,the web page from a server that hosts the website; retrieving, by theserver device, information associated with the user device, where theinformation comprises at least one of information related to contentserved to the user device from a content distribution system, usagepatterns information, or network performance information associated withthe user device; determining, by the server device, a toolbar for theweb page based on the information associated with the user device andinformation associated with the web page, wherein the toolbar includes akeep toolbar button; inserting, by the server device, the toolbar intothe web page; and transmitting, by the server device, the web page, withthe toolbar, to the user device, wherein in response to selection of thekeep toolbar button, the server device receives a request of keeping thetoolbar permanently or for a period of time when the user devicedisplays one or more web pages which are different from the web page.21. The method of claim 20, wherein the network performance informationincludes information associated with at least one of a download time,latency per flow, jitter per flow, lost packets, or delayed packets.